package com.amway.qy.core;

import java.util.HashMap;
import java.util.Map;

/**
 * 
 * 用于定义微信的全局状态码.如果未来状态码有变动，则需参考微信官方文档，进行调整。
 *
 */
public enum QyWechatGlobalCode {
	HOLDER;
	private Map<Long,String> holder = new HashMap<Long,String>();
	QyWechatGlobalCode(){
		holder.put(Long.valueOf(-1), "系统繁忙");
		holder.put(Long.valueOf(0), "请求成功");
		holder.put(Long.valueOf(40001), "获取access_token时Secret错误，或者access_token无效");
		holder.put(Long.valueOf(40002), "不合法的凭证类型");
		holder.put(Long.valueOf(40003), "不合法的UserID");
		holder.put(Long.valueOf(40004), "不合法的媒体文件类型");
		holder.put(Long.valueOf(40005), "不合法的文件类型");
		holder.put(Long.valueOf(40006), "不合法的文件大小");
		holder.put(Long.valueOf(40007), "不合法的媒体文件id");
		holder.put(Long.valueOf(40008), "不合法的消息类型");
		holder.put(Long.valueOf(40013), "不合法的corpid");
		holder.put(Long.valueOf(40014), "不合法的access_token");
		holder.put(Long.valueOf(40015), "不合法的菜单类型");
		holder.put(Long.valueOf(40016), "不合法的按钮个数");
		holder.put(Long.valueOf(40017), "不合法的按钮类型");
		holder.put(Long.valueOf(40018), "不合法的按钮名字长度");
		holder.put(Long.valueOf(40019), "不合法的按钮KEY长度");
		holder.put(Long.valueOf(40020), "不合法的按钮URL长度");
		holder.put(Long.valueOf(40021), "不合法的菜单版本号");
		holder.put(Long.valueOf(40022), "不合法的子菜单级数");
		holder.put(Long.valueOf(40023), "不合法的子菜单按钮个数");
		holder.put(Long.valueOf(40024), "不合法的子菜单按钮类型");
		holder.put(Long.valueOf(40025), "不合法的子菜单按钮名字长度");
		holder.put(Long.valueOf(40026), "不合法的子菜单按钮KEY长度");
		holder.put(Long.valueOf(40027), "不合法的子菜单按钮URL长度");
		holder.put(Long.valueOf(40028), "不合法的自定义菜单使用成员");
		holder.put(Long.valueOf(40029), "不合法的oauth_code");
		holder.put(Long.valueOf(40031), "不合法的UserID列表");
		holder.put(Long.valueOf(40032), "不合法的UserID列表长度");
		holder.put(Long.valueOf(40033), "不合法的请求字符，不能包含\\uxxxx格式的字符");
		holder.put(Long.valueOf(40035), "不合法的参数");
		holder.put(Long.valueOf(40038), "不合法的请求格式");
		holder.put(Long.valueOf(40039), "不合法的URL长度");
		holder.put(Long.valueOf(40040), "不合法的插件token");
		holder.put(Long.valueOf(40041), "不合法的插件id");
		holder.put(Long.valueOf(40042), "不合法的插件会话");
		holder.put(Long.valueOf(40048), "url中包含不合法domain");
		holder.put(Long.valueOf(40054), "不合法的子菜单url域名");
		holder.put(Long.valueOf(40055), "不合法的按钮url域名");
		holder.put(Long.valueOf(40056), "不合法的agentid");
		holder.put(Long.valueOf(40057), "不合法的callbackurl或者callbackurl验证失败");
		holder.put(Long.valueOf(40058), "不合法的红包参数");
		holder.put(Long.valueOf(40059), "不合法的上报地理位置标志位");
		holder.put(Long.valueOf(40060), "设置上报地理位置标志位时没有设置callbackurl");
		holder.put(Long.valueOf(40061), "设置应用头像失败");
		holder.put(Long.valueOf(40062), "不合法的应用模式");
		holder.put(Long.valueOf(40063), "参数为空");
		holder.put(Long.valueOf(40064), "管理组名字已存在");
		holder.put(Long.valueOf(40065), "不合法的管理组名字长度");
		holder.put(Long.valueOf(40066), "不合法的部门列表");
		holder.put(Long.valueOf(40067), "标题长度不合法");
		holder.put(Long.valueOf(40068), "不合法的标签ID");
		holder.put(Long.valueOf(40069), "不合法的标签ID列表");
		holder.put(Long.valueOf(40070), "列表中所有标签（成员）ID都不合法");
		holder.put(Long.valueOf(40071), "不合法的标签名字，标签名字已经存在");
		holder.put(Long.valueOf(40072), "不合法的标签名字长度");
		holder.put(Long.valueOf(40073), "不合法的openid");
		holder.put(Long.valueOf(40074), "news消息不支持指定为高保密消息");
		holder.put(Long.valueOf(40077), "不合法的预授权码");
		holder.put(Long.valueOf(40078), "不合法的临时授权码");
		holder.put(Long.valueOf(40079), "不合法的授权信息");
		holder.put(Long.valueOf(40080), "不合法的suitesecret");
		holder.put(Long.valueOf(40082), "不合法的suitetoken");
		holder.put(Long.valueOf(40083), "不合法的suiteid");
		holder.put(Long.valueOf(40084), "不合法的永久授权码");
		holder.put(Long.valueOf(40085), "不合法的suiteticket");
		holder.put(Long.valueOf(40086), "不合法的第三方应用appid");
		holder.put(Long.valueOf(40092), "导入文件存在不合法的内容");
		holder.put(Long.valueOf(40093), "不合法的跳转target");
		holder.put(Long.valueOf(40094), "不合法的URL");
		holder.put(Long.valueOf(41001), "缺少access_token参数");
		holder.put(Long.valueOf(41002), "缺少corpid参数");
		holder.put(Long.valueOf(41003), "缺少refresh_token参数");
		holder.put(Long.valueOf(41004), "缺少secret参数");
		holder.put(Long.valueOf(41005), "缺少多媒体文件数据");
		holder.put(Long.valueOf(41006), "缺少media_id参数");
		holder.put(Long.valueOf(41007), "缺少子菜单数据");
		holder.put(Long.valueOf(41008), "缺少oauth code");
		holder.put(Long.valueOf(41009), "缺少UserID");
		holder.put(Long.valueOf(41010), "缺少url");
		holder.put(Long.valueOf(41011), "缺少agentid");
		holder.put(Long.valueOf(41012), "缺少应用头像mediaid");
		holder.put(Long.valueOf(41013), "缺少应用名字");
		holder.put(Long.valueOf(41014), "缺少应用描述");
		holder.put(Long.valueOf(41015), "缺少Content");
		holder.put(Long.valueOf(41016), "缺少标题");
		holder.put(Long.valueOf(41017), "缺少标签ID");
		holder.put(Long.valueOf(41018), "缺少标签名字");
		holder.put(Long.valueOf(41021), "缺少suiteid");
		holder.put(Long.valueOf(41022), "缺少suitetoken");
		holder.put(Long.valueOf(41023), "缺少suiteticket");
		holder.put(Long.valueOf(41024), "缺少suitesecret");
		holder.put(Long.valueOf(41025), "缺少永久授权码");
		holder.put(Long.valueOf(41034), "缺少login_ticket");
		holder.put(Long.valueOf(41035), "缺少跳转target");
		holder.put(Long.valueOf(42001), "access_token超时");
		holder.put(Long.valueOf(42002), "refresh_token超时");
		holder.put(Long.valueOf(42003), "oauth_code超时");
		holder.put(Long.valueOf(42004), "插件token超时");
		holder.put(Long.valueOf(42007), "预授权码失效");
		holder.put(Long.valueOf(42008), "临时授权码失效");
		holder.put(Long.valueOf(42009), "suitetoken失效");
		holder.put(Long.valueOf(43001), "需要GET请求");
		holder.put(Long.valueOf(43002), "需要POST请求");
		holder.put(Long.valueOf(43003), "需要HTTPS");
		holder.put(Long.valueOf(43004), "需要成员已关注");
		holder.put(Long.valueOf(43005), "需要好友关系");
		holder.put(Long.valueOf(43006), "需要订阅");
		holder.put(Long.valueOf(43007), "需要授权");
		holder.put(Long.valueOf(43008), "需要支付授权");
		holder.put(Long.valueOf(43010), "需要处于回调模式");
		holder.put(Long.valueOf(43011), "需要企业授权");
		holder.put(Long.valueOf(43013), "应用对成员不可见");
		holder.put(Long.valueOf(44001), "多媒体文件为空");
		holder.put(Long.valueOf(44002), "POST的数据包为空");
		holder.put(Long.valueOf(44003), "图文消息内容为空");
		holder.put(Long.valueOf(44004), "文本消息内容为空");
		holder.put(Long.valueOf(45001), "多媒体文件大小超过限制");
		holder.put(Long.valueOf(45002), "消息内容大小超过限制");
		holder.put(Long.valueOf(45003), "标题大小超过限制");
		holder.put(Long.valueOf(45004), "描述大小超过限制");
		holder.put(Long.valueOf(45005), "链接长度超过限制");
		holder.put(Long.valueOf(45006), "图片链接长度超过限制");
		holder.put(Long.valueOf(45007), "语音播放时间超过限制");
		holder.put(Long.valueOf(45008), "图文消息的文章数量不能超过10条");
		holder.put(Long.valueOf(45009), "接口调用超过限制");
		holder.put(Long.valueOf(45010), "创建菜单个数超过限制");
		holder.put(Long.valueOf(45015), "回复时间超过限制");
		holder.put(Long.valueOf(45016), "系统分组，不允许修改");
		holder.put(Long.valueOf(45017), "分组名字过长");
		holder.put(Long.valueOf(45018), "分组数量超过上限");
		holder.put(Long.valueOf(45022), "应用名字长度不合法，合法长度为2-16个字");
		holder.put(Long.valueOf(45024), "账号数量超过上限");
		holder.put(Long.valueOf(45025), "同一个成员每周只能邀请一次");
		holder.put(Long.valueOf(45026), "触发删除用户数的保护");
		holder.put(Long.valueOf(45027), "mpnews每天只能发送100次");
		holder.put(Long.valueOf(45028), "素材数量超过上限");
		holder.put(Long.valueOf(45029), "media_id对该应用不可见");
		holder.put(Long.valueOf(45032), "作者名字长度超过限制");
		holder.put(Long.valueOf(46001), "不存在媒体数据");
		holder.put(Long.valueOf(46002), "不存在的菜单版本");
		holder.put(Long.valueOf(46003), "不存在的菜单数据");
		holder.put(Long.valueOf(46004), "不存在的成员");
		holder.put(Long.valueOf(47001), "解析JSON/XML内容错误");
		holder.put(Long.valueOf(48001), "Api未授权");
		holder.put(Long.valueOf(48002), "Api禁用(一般是管理组类型与Api不匹配，例如普通管理组调用会话服务的Api)");
		holder.put(Long.valueOf(48003), "suitetoken无效");
		holder.put(Long.valueOf(48004), "授权关系无效");
		holder.put(Long.valueOf(48005), "Api已废弃");
		holder.put(Long.valueOf(50001), "redirect_uri未授权");
		holder.put(Long.valueOf(50002), "成员不在权限范围");
		holder.put(Long.valueOf(50003), "应用已停用");
		holder.put(Long.valueOf(50004), "成员状态不正确，需要成员为企业验证中状态");
		holder.put(Long.valueOf(50005), "企业已禁用");
		holder.put(Long.valueOf(60001), "部门长度不符合限制");
		holder.put(Long.valueOf(60002), "部门层级深度超过限制");
		holder.put(Long.valueOf(60003), "部门不存在");
		holder.put(Long.valueOf(60004), "父亲部门不存在");
		holder.put(Long.valueOf(60005), "不允许删除有成员的部门");
		holder.put(Long.valueOf(60006), "不允许删除有子部门的部门");
		holder.put(Long.valueOf(60007), "不允许删除根部门");
		holder.put(Long.valueOf(60008), "部门名称已存在");
		holder.put(Long.valueOf(60009), "部门名称含有非法字符");
		holder.put(Long.valueOf(60010), "部门存在循环关系");
		holder.put(Long.valueOf(60011), "管理组权限不足，（user/department/agent）无权限");
		holder.put(Long.valueOf(60012), "不允许删除默认应用");
		holder.put(Long.valueOf(60013), "不允许关闭应用");
		holder.put(Long.valueOf(60014), "不允许开启应用");
		holder.put(Long.valueOf(60015), "不允许修改默认应用可见范围");
		holder.put(Long.valueOf(60016), "不允许删除存在成员的标签");
		holder.put(Long.valueOf(60017), "不允许设置企业");
		holder.put(Long.valueOf(60019), "不允许设置应用地理位置上报开关");
		holder.put(Long.valueOf(60020), "访问ip不在白名单之中");
		holder.put(Long.valueOf(60025), "主页型应用不支持的消息类型");
		holder.put(Long.valueOf(60027), "不支持第三方修改主页型应用字段");
		holder.put(Long.valueOf(60028), "应用已授权予第三方，不允许通过接口修改主页url");
		holder.put(Long.valueOf(60029), "应用已授权予第三方，不允许通过接口修改可信域名");
		holder.put(Long.valueOf(60102), "UserID已存在");
		holder.put(Long.valueOf(60103), "手机号码不合法");
		holder.put(Long.valueOf(60104), "手机号码已存在");
		holder.put(Long.valueOf(60105), "邮箱不合法");
		holder.put(Long.valueOf(60106), "邮箱已存在");
		holder.put(Long.valueOf(60107), "微信号不合法");
		holder.put(Long.valueOf(60108), "微信号已存在");
		holder.put(Long.valueOf(60109), "QQ号已存在");
		holder.put(Long.valueOf(60110), "用户同时归属部门超过20个");
		holder.put(Long.valueOf(60111), "UserID不存在");
		holder.put(Long.valueOf(60112), "成员姓名不合法");
		holder.put(Long.valueOf(60113), "身份认证信息（微信号/手机/邮箱）不能同时为空");
		holder.put(Long.valueOf(60114), "性别不合法");
		holder.put(Long.valueOf(60115), "已关注成员微信不能修改");
		holder.put(Long.valueOf(60116), "扩展属性已存在");
		holder.put(Long.valueOf(60118), "成员无有效邀请字段，详情参考(邀请成员关注)的接口说明");
		holder.put(Long.valueOf(60119), "成员已关注");
		holder.put(Long.valueOf(60120), "成员已禁用");
		holder.put(Long.valueOf(60121), "找不到该成员");
		holder.put(Long.valueOf(60122), "邮箱已被外部管理员使用");
		holder.put(Long.valueOf(60123), "无效的部门id");
		holder.put(Long.valueOf(60124), "无效的父部门id");
		holder.put(Long.valueOf(60125), "非法部门名字，长度超过限制、重名等");
		holder.put(Long.valueOf(60126), "创建部门失败");
		holder.put(Long.valueOf(60127), "缺少部门id");
		holder.put(Long.valueOf(60128), "字段不合法，可能存在主键冲突或者格式错误");
		holder.put(Long.valueOf(60129), "用户设置了拒绝邀请");
		holder.put(Long.valueOf(80001), "可信域名不匹配，或者可信域名没有IPC备案（后续将不能在该域名下正常使用jssdk）");
		holder.put(Long.valueOf(81003), "邀请额度已用完");
		holder.put(Long.valueOf(81004), "部门数量超过上限");
		holder.put(Long.valueOf(82001), "发送消息或者邀请的参数全部为空或者全部不合法");
		holder.put(Long.valueOf(82002), "不合法的PartyID列表长度");
		holder.put(Long.valueOf(82003), "不合法的TagID列表长度");
		holder.put(Long.valueOf(82004), "微信版本号过低");
		holder.put(Long.valueOf(85002), "包含不合法的词语");
		holder.put(Long.valueOf(86001), "不合法的会话ID");
		holder.put(Long.valueOf(86003), "不存在的会话ID");
		holder.put(Long.valueOf(86004), "不合法的会话名");
		holder.put(Long.valueOf(86005), "不合法的会话管理员");
		holder.put(Long.valueOf(86006), "不合法的成员列表大小");
		holder.put(Long.valueOf(86007), "不存在的成员");
		holder.put(Long.valueOf(86101), "需要会话管理员权限");
		holder.put(Long.valueOf(86201), "缺少会话ID");
		holder.put(Long.valueOf(86202), "缺少会话名");
		holder.put(Long.valueOf(86203), "缺少会话管理员");
		holder.put(Long.valueOf(86204), "缺少成员");
		holder.put(Long.valueOf(86205), "非法的会话ID长度");
		holder.put(Long.valueOf(86206), "非法的会话ID数值");
		holder.put(Long.valueOf(86207), "会话管理员不在用户列表中");
		holder.put(Long.valueOf(86208), "消息服务未开启");
		holder.put(Long.valueOf(86209), "缺少操作者");
		holder.put(Long.valueOf(86210), "缺少会话参数");
		holder.put(Long.valueOf(86211), "缺少会话类型（单聊或者群聊）");
		holder.put(Long.valueOf(86213), "缺少发件人");
		holder.put(Long.valueOf(86214), "非法的会话类型");
		holder.put(Long.valueOf(86215), "会话已存在");
		holder.put(Long.valueOf(86216), "非法会话成员");
		holder.put(Long.valueOf(86217), "会话操作者不在成员列表中");
		holder.put(Long.valueOf(86218), "非法会话发件人");
		holder.put(Long.valueOf(86219), "非法会话收件人");
		holder.put(Long.valueOf(86220), "非法会话操作者");
		holder.put(Long.valueOf(86221), "单聊模式下，发件人与收件人不能为同一人");
		holder.put(Long.valueOf(86222), "不允许消息服务访问的API");
		holder.put(Long.valueOf(86304), "不合法的消息类型");
		holder.put(Long.valueOf(86305), "客服服务未启用");
		holder.put(Long.valueOf(86306), "缺少发送人");
		holder.put(Long.valueOf(86307), "缺少发送人类型");
		holder.put(Long.valueOf(86308), "缺少发送人id");
		holder.put(Long.valueOf(86309), "缺少接收人");
		holder.put(Long.valueOf(86310), "缺少接收人类型");
		holder.put(Long.valueOf(86311), "缺少接收人id");
		holder.put(Long.valueOf(86312), "缺少消息类型");
		holder.put(Long.valueOf(86313), "缺少客服，发送人或接收人类型，必须有一个为kf");
		holder.put(Long.valueOf(86314), "客服不唯一，发送人或接收人类型，必须只有一个为kf");
		holder.put(Long.valueOf(86315), "不合法的发送人类型");
		holder.put(Long.valueOf(86316), "不合法的发送人id。Userid不存在、openid不存在、kf不存在");
		holder.put(Long.valueOf(86317), "不合法的接收人类型");
		holder.put(Long.valueOf(86318), "不合法的接收人id。Userid不存在、openid不存在、kf不存在");
		holder.put(Long.valueOf(86319), "不合法的客服，kf不在客服列表中");
		holder.put(Long.valueOf(86320), "不合法的客服类型");
		holder.put(Long.valueOf(90001), "未认证摇一摇周边");
		holder.put(Long.valueOf(90002), "缺少摇一摇周边ticket参数");
		holder.put(Long.valueOf(90003), "摇一摇周边ticket参数不合法");
		holder.put(Long.valueOf(90004), "摇一摇周边ticket过期");
		holder.put(Long.valueOf(90005), "未开启摇一摇周边服务");
		
	}
	
	public String getErrorMsgByCode(long code){
		String ret = holder.get(code);
		if(ret!=null){
			return ret;
		}else{
			throw new IllegalArgumentException("No matching Error Message for [" + code + "]");
		}
	}
}
